判断App位于前台或者后台的6种方法:
https://github.com/wenmingvs/AndroidProcess
做一个项目时,需要获取当前正在显示的应用app(正在运行的应用进程等),android5.0-之前可以使用getRunningTask获取,5.0这个方法不可用了,但是提供了getRunningAppProcess也可以获得。但是自从android5.1+以后,Google从安全和隐私方面考虑,也废弃了getRunningAppProcess方法,getRunningAppProcess方法现在只能返回本应用(当前应用信息-1个应用进程)。
通过这段时间的研究和在网上搜集的资料发现有很多的解决办法,但都有一定缺陷或执行失败;诸如,通过反射ActivityManager.RunningAppProcessInfo下的“processState”,或者反射android.app.ActivityThread,或者获取正在运行的top activity也都是失败。还有使用UsageState,AccessableService,这些需要用户手动开启,用户体验效果差,不符合项目需要。也找过源代码研究比如ActivityManagerNative的,系统设置里的应用管理代码,也都无功而返。
终在stackOverFlow找到一个大神的回答http://stackoverflow.com/a/32366476。读取android系统(Linux)下proc的文件夹可以获取进程的相关信息。虽然之前看到过这个大神获取了正在运行的进程列表